package main

import (
	"fmt"
	"runtime"
	"sync"
)

var wg = new(sync.WaitGroup)

func a() {
	defer func() {
		wg.Done()
	}()

	for i := 0; i < 10; i++ {
		fmt.Printf("A: %d\n", i)
	}
}

func b() {
	defer func() {
		wg.Done()
	}()

	for i := 0; i < 10; i++ {
		fmt.Printf("B: %d\n", i)
	}
}

func main() {
	// goroutine 初始栈大小为2k

	// 设置 最大 线程数
	// 默认为 CPU 逻辑核心数
	fmt.Printf("CPU 逻辑核心数: %d\n", runtime.NumCPU())
	// 线程过多会增加 上下文切换负担
	runtime.GOMAXPROCS(1)
	wg.Add(2)
	go a()
	go b()
	wg.Wait()
}
